import java.util.Random;

/**
 * 加减法口算练习系统 - V0.2
 * 功能：生成加减法算式习题，每行显示多个算式，并显示答案
 * 特点：加法和不超过100，减法差不小于0，可以包含100以上的数和负数
 */
public class CalculationSystemV02 {
    public static void main(String[] args) {
        System.out.println("===== 加减法口算练习系统 - V0.2 =====");
        System.out.println("本次练习共50道题目，请认真完成！\n");
        
        generateExercises(50);
        
        System.out.println("\n===== 练习结束 =====");
    }
    
    /**
     * 生成指定数量的加减法习题
     * @param count 习题数量
     */
    public static void generateExercises(int count) {
        Random random = new Random();
        int exercisesPerLine = 3; // 每行显示的题目数量
        
        for (int i = 1; i <= count; i++) {
            // 随机决定是加法还是减法
            boolean isAddition = random.nextBoolean();
            int num1, num2, result;
            String operator;
            
            if (isAddition) {
                // 加法：确保结果不超过100，可以包含负数
                // 调整生成逻辑，允许更大范围的数字，但确保和不超过100
                num1 = random.nextInt(201) - 50; // -50到150
                // 确保num2在合理范围内且num1+num2 <= 100
                int maxNum2 = 100 - num1;
                if (maxNum2 < -100) maxNum2 = -100;
                if (maxNum2 > 200) maxNum2 = 200;
                num2 = maxNum2 >= -100 ? random.nextInt(maxNum2 - (-100) + 1) + (-100) : -100;
                result = num1 + num2;
                operator = " + ";
            } else {
                // 减法：确保结果非负，可以包含负数
                // 调整生成逻辑，允许更大范围的数字，但确保差不小于0
                num1 = random.nextInt(201) - 50; // -50到150
                // 确保num2 <= num1且num2在合理范围内
                int minNum2 = num1 - 100;
                if (minNum2 < -100) minNum2 = -100;
                int maxNum2 = num1;
                num2 = minNum2 <= maxNum2 ? random.nextInt(maxNum2 - minNum2 + 1) + minNum2 : minNum2;
                result = num1 - num2;
                operator = " - ";
            }
            
            // 输出题目，包含答案，使用格式化确保对齐
            System.out.printf("%2d. %3d%s%3d = %3d       ", i, num1, operator, num2, result);
            
            // 每行显示指定数量的题目后换行
            if (i % exercisesPerLine == 0) {
                System.out.println();
            }
        }
    }
}